package com.zoke.support.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 处理时间的工具
 * 
 * @author qmark
 *
 */
public class TimeUtil {
	/** 根据long 格式化时间 仅适用于萌Mark PHP返回的时间为Unix时间戳单位秒 不是毫秒 **/
	public static String getTime(String timelong) {
		// 处理－－判断是否是同一天
		Date timeDate = new Date(Long.parseLong(timelong) * 1000);
		// 判断此日期是不是今天 如果是今天 只显示日期 如果不是今天 则显示日子
		if (isToday(timeDate)) {
			// 是同一天 则返回时间
			SimpleDateFormat todayFormat = new SimpleDateFormat("HH:mm");
			return "今天 " + todayFormat.format(timeDate);
		}
		// 不是同一天 则返回具体的月份 最好判断一下是否是同一年
		if (isSameYear(timeDate)) {
			SimpleDateFormat year = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
			return year.format(timeDate);
		}
		SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日 HH:mm");
		return formatter.format(timeDate);
	}

	/** 判断两个日期是否是同一年 **/
	private static boolean isSameYear(Date timeDate) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy年");
		return formatter.format(timeDate).equals(formatter.format(new Date()));
	}

	/** 判断两个日期是否是同一年的同一天 **/
	private static boolean isToday(Date timeDate) {
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");
		return formatter.format(timeDate).equals(formatter.format(new Date()));
	}

	/** 格式化时间 **/
	public static String getTime(long time) {
		long now = new Date().getTime();
		long seconds = Math.abs(now - time);
		// xx天
		int day = (int) seconds / (24 * 3600);
		seconds = seconds % (24 * 3600);
		// xx时
		int hour = (int) seconds / 3600;
		seconds = seconds % 3600;
		// xx分
		int min = (int) seconds / 60;
		seconds = seconds % 60;
		// xx秒
		int sec = (int) seconds;

		if (day > 0) {
			//
			if (day == 1 && hour > 0) {
				return "昨天";
			}
			SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日");
			return formatter.format(time);
		}

		if (hour > 1 && day == 0) {
			return "今天";
		}

		if (hour == 1 && day == 0) {
			return hour + "小时前";
		}

		if (hour <= 0 && min != 0) {
			return min + "分前";
		}

		if (min <= 0 && sec != 0) {
			return sec + "秒前";
		}
		if (sec <= 0)
			return "刚刚";
		SimpleDateFormat formatter = new SimpleDateFormat("MM月dd日");
		return formatter.format(time);
	}
}
